package com.rc.web.listener;

import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.stp.StpUtil;
import com.mybatisflex.annotation.UpdateListener;
import com.rc.common.model.BaseUserEntity;

/**
 * 公共字段填充监听器
 * 用于在更新操作时自动填充更新人信息
 */
public class BaseUpdateListener implements UpdateListener {

    /**
     * 更新操作监听方法
     * @param o 被更新的实体对象
     */
    @Override
    public void onUpdate(Object o) {
        try{
            // mq等非web环境不能从stputil拿id
            if (o instanceof BaseUserEntity userEntity){
                // 获取当前登录用户ID
                long loginIdAsLong = StpUtil.getLoginIdAsLong();
                // 设置更新人字段
                userEntity.setUpdateUser(loginIdAsLong);
            }
        }catch (SaTokenException ignored){
            // 忽略SaToken异常，避免影响正常业务逻辑
        }
    }
}
